Garbage Collection (GC) হল একটি প্রক্রিয়া যা Java Virtual Machine (JVM) পরিচালনা করে এবং এটি মেমরি ব্যবস্থাপনা সম্পর্কিত একটি অটোমেটিক প্রক্রিয়া। এর মাধ্যমে, অব্যবহৃত বা "অলস" অবজেক্টগুলিকে মুছে ফেলা হয়, যাতে মেমরি পুনরায় ব্যবহৃত হতে পারে। এই প্রক্রিয়াটি Java অ্যাপ্লিকেশনগুলিকে Memory Leaks এবং OutOfMemoryError এর ঝুঁকি থেকে রক্ষা করে।
gc() মেথডটি Garbage Collection প্রক্রিয়ার সাথে সম্পর্কিত একটি পদ্ধতি যা Java এর System এবং Runtime ক্লাসে পাওয়া যায়। তবে, এটি শুধুমাত্র Garbage Collection এর জন্য একটি সুপারিশ (hint) প্রদান করে, এটি জোরপূর্বক গারবেজ কালেকশন ট্রিগার করার গ্যারান্টি দেয় না। JVM যখন উপলব্ধ মেমরি সম্পূর্ণভাবে ভরে যাবে তখন এটি নিজে থেকেই গারবেজ কালেকশন প্রক্রিয়া চালায়।
gc() মেথডের সংজ্ঞা:
public static void gc()
এটি JVM কে গারবেজ কালেকশন চালানোর জন্য অনুরোধ জানায়। তবে, এর কার্যকারিতা নির্ভর করে JVM এর বাস্তবায়নের উপর।
gc() মেথডের ব্যবহার:
- Memory Management: মেমরি ব্যবস্থাপনা সঠিকভাবে করার জন্য
gc()মেথড ব্যবহার করা হয় যাতে অব্যবহৃত অবজেক্টগুলি মুছে ফেলা যায় এবং মেমরি পুনরায় ব্যবহৃত হতে পারে। - Garbage Collection Trigger:
gc()মেথড দ্বারা গারবেজ কালেকশন প্রক্রিয়াকে ট্রিগার করা হয়, তবে এর সঠিক কাজের জন্য এটি 100% নির্ভরযোগ্য নয়। JVM স্বয়ংক্রিয়ভাবে যখন প্রয়োজনীয় মনে করবে তখন গারবেজ কালেকশন করবে।
gc() মেথডের উদাহরণ:
public class GarbageCollectionExample {
public static void main(String[] args) {
Runtime runtime = Runtime.getRuntime();
// Before requesting Garbage Collection
System.out.println("Before GC: " + runtime.freeMemory());
// Create some objects
for (int i = 0; i < 1000; i++) {
new Object();
}
// Request Garbage Collection
System.gc(); // Suggesting JVM to perform garbage collection
// After requesting Garbage Collection
System.out.println("After GC: " + runtime.freeMemory());
}
}
আউটপুট:
Before GC: 123456789
After GC: 123456789
ব্যাখ্যা:
- প্রথমে,
Runtime.getRuntime().freeMemory()মেথড ব্যবহার করে উপলব্ধ মেমরি চেক করা হয়। - তারপর কিছু অবজেক্ট তৈরি করা হয় যা মেমরি দখল করে।
System.gc()মেথড দ্বারা JVM কে গারবেজ কালেকশন করার জন্য বলা হয়। তবে, গারবেজ কালেকশন প্রক্রিয়া সম্পূর্ণরূপে নির্ভর করে JVM-র বাস্তবায়ন এবং এর নিজস্ব এলগরিদমের উপর।
Garbage Collection সম্পর্কিত কিছু গুরুত্বপূর্ণ পয়েন্ট:
- Garbage Collection Trigger:
gc()মেথড শুধু একটি request যা JVM কে গারবেজ কালেকশন চালানোর জন্য অনুরোধ করে। এটি একটি hint এবং এটি অবশ্যই execute হবে না। JVM যখন প্রয়োজন মনে করবে তখন এটি নিজে থেকেই গারবেজ কালেকশন চালাবে। - Automatic Garbage Collection: Java তে, গারবেজ কালেকশন স্বয়ংক্রিয়ভাবে পরিচালিত হয় এবং এটি শুধুমাত্র মেমরি ব্যবস্থাপনার জন্য কাজ করে।
- JVM Control: গারবেজ কালেকশন সম্পূর্ণভাবে JVM দ্বারা নিয়ন্ত্রিত। গারবেজ কালেকশন কিভাবে এবং কখন চালানো হবে তা JVM এর সিদ্ধান্ত।
- Objects Eligible for GC: যে সমস্ত অবজেক্টগুলির আর কোনো রেফারেন্স নেই, অর্থাৎ, যেগুলি আর ব্যবহৃত হচ্ছে না, তাদের গারবেজ কালেকশন প্রক্রিয়া মুছে ফেলতে পারে। তবে, এই প্রক্রিয়া নিশ্চিতভাবে কবে ঘটবে তা বলা যায় না।
gc() মেথডের সীমাবদ্ধতা:
- Non-deterministic: গারবেজ কালেকশন কখন হবে তা নির্ধারণ করা যায় না।
gc()মেথড শুধুমাত্র JVM কে একটি পরামর্শ দেয়, কিন্তু এটি একটি অ্যাসিঙ্ক্রোনাস প্রক্রিয়া এবং কখন ঘটবে তা JVM ঠিক করবে। - Performance Impact: বারবার
gc()কল করা পারফরম্যান্সে নেতিবাচক প্রভাব ফেলতে পারে, কারণ অতিরিক্ত গারবেজ কালেকশন প্রক্রিয়া CPU এবং মেমরি সম্পদ খরচ করতে পারে। - Full Garbage Collection:
gc()সাধারণত minor GC কে ট্রিগার করে, তবে full GC সম্পাদন করার জন্য আরও অন্যান্য শর্তের প্রয়োজন হয়।
gc() মেথড Java তে গারবেজ কালেকশনকে ট্রিগার করার জন্য একটি পরামর্শ প্রদান করে, তবে এটি একটি non-deterministic প্রক্রিয়া এবং JVM এটি যখন প্রয়োজন মনে করবে তখন কার্যকরী করবে। Java তে গারবেজ কালেকশন স্বয়ংক্রিয়ভাবে পরিচালিত হয়, কিন্তু gc() মেথডের সাহায্যে আপনি JVM কে গারবেজ কালেকশন চালানোর জন্য অনুরোধ করতে পারেন।
Read more